import axios from 'axios'
import { removeToken, getToken, setToken } from '@/utils/token'
import router from '@/router'
import { newTokenAPI } from '@/api'
import { Notify } from 'vant'
import { removeStorage } from '@/utils/storage'
// import {newTokenAPI} from '@/api'
axios.defaults.baseURL = 'http://geek.itheima.net'
axios.defaults.timeout = 8000
// 添加响应拦截器
axios.interceptors.response.use(function (response) { // 当状态码为2xx/3xx开头的进这里
  // 对响应数据做点什么
  return response
}, async function (error) { // 响应状态码4xx/5xx进这里
  // 对响应错误做点什么
  // console.dir(error)
  if (error.response.status === 401) {
    removeToken()
    const res = await newTokenAPI()
    console.log(res)
    setToken(res.data.data.token)
    error.config.headers.Authorization = 'Bearer ' + res.data.data.token
    return axios(error.config)
    // 请求的路径为/v1_0/authorizations*---因为500状态太多了
  } else if (error.response.status === 500 && error.config.url === '/v1_0/authorizations') {
    Notify({
      type: 'danger',
      message: '身份过期, 请重新登录'
    })
    removeToken()
    removeStorage('refresh_token')
    console.log(router)
    router.replace({
      path: '/login',
      query: {
        pa: router.currentRoute.fullPath // 登录未遂的当前页面的路由地址, 传给登录页面
      }
    })
    // router.replace('/login')
  }
  return Promise.reject(error)
})
// 添加请求拦截器
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么, 如果vuex里有token携带在请求头中
  if (config.headers.Authorization === undefined) {
    config.headers.Authorization = 'Bearer ' + getToken()
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})
export default axios
